/* 
 * File:   main.c
 * Author: Brahyam Meneses 08-10738
 *         Luis Esparragoza 08-XXXXX
 *
 * Created on 8 de junio de 2012, 11:14 AM
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>


/*
 *
 */
int main(int argc, char** argv) {
    
    //Declaracion de Variables.
    int numHilos=1;
    char* directorio,palabra;
    FILE* salida;
    DIR* dirFp;
    struct dirent *entrada;
    directorio="./";
    
    switch(argc){
        case 2: // Fue invocado con "pargrep -h"
            printf("FLAG: Entro en caso 2\n");
            if(strcmp(argv[1],"-h")==0){
                printf("Ha solicitado Ayuda\n");
                exit(EXIT_SUCCESS);
            }
            else{
                printf("Sintaxis incorrecta\n");
                exit(EXIT_FAILURE);
            }
            break;
        case 3:// Fue invocado con "pargrep palabra salida"
            printf("FLAG: Entro en caso 3\n");
            palabra=(char*)argv[1];
            salida=fopen(argv[2],"w");
            if(salida!=NULL){
                printf("No se pudo abrir el archivo de salida %s\n",argv[2]);
            }
            break;
        case 5:// Fue invocado con "pargrep -n i palabra salida" o "pargrep -d directorio palabra salida"
            printf("FLAG: Entro en caso 5\n");
            if(strcmp(argv[1],"-n")==0){
                numHilos=atoi(argv[2]);
            }
            else{
                directorio=argv[2];
            }
            palabra=argv[3];
            salida=fopen(argv[4],"w");
            if(salida==NULL){
                printf("No se pudo abrir el archivo de salida %s\n",argv[2]);
                exit(EXIT_FAILURE);
            }
            break;
        case 7:// Fue invocado con "pargrep -n i -d directorio palabra salida"
            printf("FLAG: Entro en caso 7\n");
            if(strcmp(argv[1],"-n")==0){
                numHilos=atoi(argv[2]);
                directorio=argv[4];
                palabra=argv[5];
                salida=fopen(argv[6],"w");
                if(salida==NULL){
                    printf("No se pudo abrir el archivo de salida %s\n",argv[6]);
                    exit(EXIT_FAILURE);
                }
            }
            else{
                printf("Sintaxis incorrecta");  
                exit(EXIT_FAILURE);
            }
            break;
        default:// Fue invocado con cualquier otra cantidad de argumentos.
            printf("FLAG: Entro en caso default\n");
            printf("Error de sintaxis, por favor escriba \"pargrep -h\" para obtener ayuda.\n");
            exit(EXIT_FAILURE);
            break;
    }
    
    printf("Numero de Hilos concurrentes es: %i\n",numHilos);
    printf("Directorio : %s\n",directorio);
    
    //Abrimos el Directorio de Trabajo.
    dirFp=opendir(directorio);
    if(dirFp==NULL){
        printf("No se pudo abrir el directorio señalado.");
        exit(EXIT_FAILURE);
    }
    while((entrada=readdir(dirFp))=!NULL){
        if(strcmp(entrada->d_name,".")!=0 && strcmp(entrada->d_name,"..")!=0){
            printf("%s",entrada->d_name);
        }
    }
    
    return (EXIT_SUCCESS);
}

